package com.atguigu.teach.mytask;

import com.atguigu.teach.bean.Person;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

public class MyTestEquals {
    public static void main(String[] args) {
        //1==
        // 1.1==既可以比较基本类型也可以比较引用类型
        //1.2基本类型比较的值是否相等，对于引用类型比较内存地址

        //2equals（Object里的）
        // 2.1 只能比较引用类型，具体问题具体分析，是否被重写过
        //  没有被重写过，默认出厂方法，它就是==
        //  假如被重写过，要看重写的规则。String的类型就是比较的值

        //HashSet的底层是HashMap,add底层就是map.put，key是值，value是PRESENT
        //比较规则 1 hashcode 再比较 2值
        String s1=new String("abc");
        String s2=new String("abc");
        Set<String> set01 = new HashSet<>();
        set01.add(s1);
        set01.add(s2);
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));
        System.out.println(s1.hashCode()+"\t"+s2.hashCode());
        System.out.println(set01.size());
        System.out.println("================================");

        Person p1=new Person("abc");
        Person p2=new Person("abc");
        System.out.println(p1==p2);
        System.out.println(p1.equals(p2));
        Set<Person> set02=new HashSet<>();
        set02.add(p1);
        set02.add(p2);
        System.out.println(set02.size());

    }
}
